home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / Math / TrigOp.php < prev   
PHP Script  |  2004-03-24  |  6KB  |  207 lines

  1. <?php
  2. //
  3. // +----------------------------------------------------------------------+
  4. // | PHP Version 4                                                        |
  5. // +----------------------------------------------------------------------+
  6. // | Copyright (c) 1997-2002 The PHP Group                                |
  7. // +----------------------------------------------------------------------+
  8. // | This source file is subject to version 2.0 of the PHP license,       |
  9. // | that is bundled with this package in the file LICENSE, and is        |
  10. // | available at through the world-wide-web at                           |
  11. // | http://www.php.net/license/2_02.txt.                                 |
  12. // | If you did not receive a copy of the PHP license and are unable to   |
  13. // | obtain it through the world-wide-web, please send a note to          |
  14. // | license@php.net so we can mail you a copy immediately.               |
  15. // +----------------------------------------------------------------------+
  16. // | Authors: Jesus M. Castagnetto <jmcastagnetto@php.net>                |
  17. // +----------------------------------------------------------------------+
  18. //
  19. // $Id: TrigOp.php,v 1.1 2002/11/24 07:16:24 jmcastagnetto Exp $
  20. //
  21.  
  22. require_once 'PEAR.php';
  23.  
  24. /**
  25.  * Static class implementing supplementary trigonometric functions
  26.  *
  27.  * Example of use:
  28.  *
  29.  * $cot = Math_TrigOp::cot(0.3445);
  30.  * $x = Math_TrigOp::acsch(-0.231);
  31.  * 
  32.  * Originally this class was part of NumPHP (Numeric PHP package)
  33.  *
  34.  * @author    Jesus M. Castagnetto <jmcastagnetto@php.net>
  35.  * @version    1.0
  36.  * @access    public
  37.  * @package    Math_TrigOp
  38.  */
  39.  
  40. class Math_TrigOp {/*{{{*/
  41.  
  42.     // supplementary trigonometric functions
  43.     
  44.     /**
  45.      * Calculates the secant of the parameter
  46.      * 
  47.      * @param float $x
  48.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  49.      * @access public
  50.      */
  51.     function sec($x) {/*{{{*/
  52.         $x = floatval($x);
  53.         $cos = cos($x);
  54.         if ($cos == 0.0) {
  55.             return PEAR::raiseError('Undefined operation, cosine of parameter is zero');
  56.         } else {
  57.             return 1/$cos;
  58.         }
  59.     }/*}}}*/
  60.  
  61.     /**
  62.      * Calculates the cosecant of the parameter
  63.      * 
  64.      * @param float $x
  65.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  66.      * @access public
  67.      */
  68.     function csc($x) {/*{{{*/
  69.         $x = floatval($x);
  70.         $sin = sin($x);
  71.         if ($sin == 0.0) {
  72.             return PEAR::raiseError('Undefined operation, sine of parameter is zero');
  73.         } else {
  74.             return 1/$sin;
  75.         }
  76.     }/*}}}*/
  77.  
  78.     /**
  79.      * Calculates the cotangent of the parameter
  80.      * 
  81.      * @param float $x
  82.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  83.      * @access public
  84.      */
  85.     function cot($x) {/*{{{*/
  86.         $x = floatval($x);
  87.         $tan = tan($x);
  88.         if ($tan == 0.0) {
  89.             return PEAR::raiseError('Undefined operation, tangent of parameter is zero');
  90.         } else {
  91.             return 1/$tan;
  92.         }
  93.     }/*}}}*/
  94.  
  95.     // Hyperbolic functions
  96.  
  97.     /**
  98.      * Calculates the hyperbolic secant of the parameter
  99.      * 
  100.      * @param float $x
  101.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  102.      * @access public
  103.      */
  104.     function sech ($x) {/*{{{*/
  105.         $x = floatval($x);
  106.         $cosh = cosh($x);
  107.         if ($cosh == 0.0) {
  108.             return PEAR::raiseError('Undefined operation, hyperbolic cosine of parameter is zero');
  109.         } else {
  110.             return 1/$cosh;
  111.         }
  112.     }/*}}}*/
  113.  
  114.     /**
  115.      * Calculates the hyperbolic cosecant of the parameter
  116.      * 
  117.      * @param float $x
  118.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  119.      * @access public
  120.      */
  121.     function csch ($x) {/*{{{*/
  122.         $x = floatval($x);
  123.         $sinh = sinh($x);
  124.         if ($sinh == 0.0) {
  125.             return PEAR::raiseError('Undefined operation, hyperbolic sine of parameter is zero');
  126.         } else {
  127.             return 1/$sinh;
  128.         }
  129.     }/*}}}*/
  130.  
  131.     /**
  132.      * Calculates the hyperbolic cotangent of the parameter
  133.      * 
  134.      * @param float $x
  135.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  136.      * @access public
  137.      */
  138.     function coth ($x) {/*{{{*/
  139.         $x = floatval($x);
  140.         $tanh = tanh($x);
  141.         if ($tanh == 0.0) {
  142.             return PEAR::raiseError('Undefined operation, hyperbolic tangent of parameter is zero');
  143.         } else {
  144.             return 1/$tanh;
  145.         }
  146.     }/*}}}*/
  147.  
  148.     // Inverse hyperbolic functions
  149.  
  150.     /**
  151.      * Calculates the inverse hyperbolic secant of the parameter
  152.      * 
  153.      * @param float $x
  154.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  155.      * @access public
  156.      */
  157.     function asech ($x) {/*{{{*/
  158.         $x = floatval($x);
  159.         if ($x == 0.0) {
  160.             return PEAR::raiseError('Undefined operation, parameter is zero');
  161.         } else {
  162.             return log((1 + sqrt(1 - $x*$x)) / $x);
  163.         }
  164.     }/*}}}*/
  165.  
  166.     /**
  167.      * Calculates the inverse hyperbolic cosecant of the parameter
  168.      * 
  169.      * @param float $x
  170.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  171.      * @access public
  172.      */
  173.     function acsch ($x) {/*{{{*/
  174.         $x = floatval($x);
  175.         if ($x == 0.0) {
  176.             return PEAR::raiseError('Undefined operation, parameter is zero');
  177.         } elseif ($x < 0) {
  178.             return PEAR::raiseError('Undefined operation, parameter is negative');
  179.         } else {
  180.             return log((1 + sqrt(1 + $x*$x)) / $x);
  181.         }
  182.     }/*}}}*/
  183.  
  184.     /**
  185.      * Calculates the inverse hyperbolic cotangent of the parameter
  186.      * 
  187.      * @param float $x
  188.      * @returns mixed A floating point on success, PEAR_Error object otherwise
  189.      * @access public
  190.      */
  191.     function acoth ($x) {/*{{{*/
  192.         $x = floatval($x);
  193.         if ($x == 1.0) {
  194.             return PEAR::raiseError('Undefined operation, parameter is 1.0');
  195.         } else {
  196.             $rat = ($x + 1)/($x - 1);
  197.             if ($rat < 0) {
  198.                 return PEAR::raiseError('Undefined operation, (x+1)/(x-1) is negative');
  199.             } else {
  200.                 return 0.5*log($rat);
  201.             }
  202.         }
  203.     }/*}}}*/
  204.  
  205. }/*}}}*/
  206. ?>
  207.